export {}

// interface 接口

// interface Point2D {
//   x: number
//   y: number
// }

// interface Point3D {
//   x: number
//   y: number
//   z: number
// }

// 继承Point2D的属性

// interface Point3D extends Point2D {
//   z: number
// }

// let point : Point3D = {
//   x: 1,
//   y: 2,
//   z: 3
// }

// 交叉类型 实现继承效果

type Point2D = {
  x: number
  y: number
}

// 交叉类型 使用 &

type Point3D = Point2D & {
  z: number
}

let point: Point3D = {
  x: 1,
  y: 2,
  z: 3
}

// 类型别名和 接口的区别
// 类型别名重复声明会报错
// type Person = {
//   name: string
// }

// type Person = {
//   age: number
// }

// 接口可以合并
interface Person {
  name: string
  height: string
}

interface Person {
  age: number
}

let person: Person = {
  name: '老韩',
  age: 18,
  height: '220'
}